package kornell.gui.client.presentation.admin.institution.generic;
import com.github.gwtbootstrap.client.ui.FileUpload;
import com.github.gwtbootstrap.client.ui.Form;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import kornell.api.client.Callback;
import kornell.api.client.KornellSession;
import kornell.core.entity.EntityFactory;
import kornell.core.entity.Institution;
import kornell.core.util.StringUtils;
import kornell.gui.client.util.forms.formfield.PeopleMultipleSelect;
public class GenericInstitutionAssetsView extends Composite {
interface MyUiBinder extends UiBinder<Widget, GenericInstitutionAssetsView> {
}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
public static final EntityFactory entityFactory = GWT.create(EntityFactory.class);
private KornellSession session;
boolean isCurrentUser, showContactDetails, isRegisteredWithCPF;
PeopleMultipleSelect peopleMultipleSelect;
@UiField
Form form;
@UiField
FlowPanel assetsFields;
@UiField
Button btnOK;
@UiField
Button btnCancel;
private Institution institution;
public GenericInstitutionAssetsView(final KornellSession session,
kornell.gui.client.presentation.admin.institution.AdminInstitutionView.Presenter presenter, Institution institution) {
this.session = session;
this.institution = institution;
initWidget(uiBinder.createAndBindUi(this));
// i18n
btnOK.setText("Atualizar");
btnCancel.setText("Cancelar");
initData();
}
public void initData() {
assetsFields.clear();
assetsFields.add(buildFileUploadPanel("logo250x45.png", "image/png", "Logo 250x45 - escura"));
assetsFields.add(buildFileUploadPanel("logo250x45_light.png", "image/png", "Logo 250x45 - clara"));
assetsFields.add(buildFileUploadPanel("logo300x80.png", "image/png", "Logo 300x80 - escura"));
assetsFields.add(buildFileUploadPanel("logo300x80_light.png", "image/png", "Logo 300x80 - clara"));
assetsFields.add(buildFileUploadPanel("bgVitrine.jpg", "image/jpg", "Background da Vitrine"));
assetsFields.add(buildFileUploadPanel("favicon.ico", "image/x-icon", "Favicon"));
}
private FlowPanel buildFileUploadPanel(final String fileName, final String contentType, String label) {
// Create a FormPanel and point it at a service
final FormPanel form = new FormPanel();
final String elementId = fileName.replace('.', '-');
// Create a panel to hold all of the form widgets
FlowPanel fieldPanelWrapper = new FlowPanel();
fieldPanelWrapper.addStyleName("fieldPanelWrapper fileUploadPanel");
form.setWidget(fieldPanelWrapper);
// Create the label panel
FlowPanel labelPanel = new FlowPanel();
labelPanel.addStyleName("labelPanel");
Label lblLabel = new Label(label);
lblLabel.addStyleName("lblLabel");
labelPanel.add(lblLabel);
fieldPanelWrapper.add(labelPanel);
// Create the FileUpload component
FlowPanel fileUploadPanel = new FlowPanel();
FileUpload fileUpload = new FileUpload();
fileUpload.setName("uploadFormElement");
fileUpload.setId(elementId);
fileUploadPanel.add(fileUpload);
fieldPanelWrapper.add(fileUpload);
// Add a submit button to the form
Button btnOK = new Button("Atualizar");
btnOK.addStyleName("btnAction btnStandard");
btnOK.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
String test = fileName.replace(".", "%2E");
session.institution(institution.getUUID()).getUploadURL(test, new Callback<String>() {
@Override
public void ok(String url) {
getFile(elementId, contentType, url);
}
});
}
});
fieldPanelWrapper.add(btnOK);
Anchor anchor = new Anchor();
anchor.setHTML("<icon class=\"fa fa-eye\"></i>");
anchor.setTitle("Visualizar");
anchor.setHref(StringUtils.mkurl(institution.getBaseURL(), "repository", institution.getAssetsRepositoryUUID(), fileName));
anchor.setTarget("_blank");
fieldPanelWrapper.add(anchor);
return fieldPanelWrapper;
}
public static native void getFile(String elementId, String contentType, String url) /*-{
if ($wnd.document.getElementById(elementId).files.length != 1) {
@kornell.gui.client.util.view.KornellNotification::showError(Ljava/lang/String;)("Por favor selecione uma imagem");
} else {
@kornell.gui.client.util.view.LoadingPopup::show()();
var file = $wnd.document.getElementById(elementId).files[0];
if (file.name.indexOf(elementId.split("-")[1]) == -1) {
@kornell.gui.client.util.view.KornellNotification::showError(Ljava/lang/String;)("Faça o upload de uma imagem do formato exigido");
@kornell.gui.client.util.view.LoadingPopup::hide()();
} else {
var req = new XMLHttpRequest();
req.open('PUT', url);
req.setRequestHeader("Content-type", contentType);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
@kornell.gui.client.util.view.LoadingPopup::hide()();
@kornell.gui.client.util.view.KornellNotification::show(Ljava/lang/String;)("Atualização de imagem completa");
}
}
req.send(file);
}
}
}-*/;
}